package com.fintech.third.model.moxie.fund;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;

import java.io.Serializable;
import java.util.Date;
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class LoanInfo implements Serializable{
    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	// 借款人姓名
    @JsonProperty("name")
    private String name;
    // 借款人身份证
    @JsonProperty("id_card")
    private String idCard;
    // 借款人手机
    @JsonProperty("phone")
    private String phone;
    // 借款人联系地址
    @JsonProperty("mailing_address")
    private String mailingAddress;
    // 合同号
    @JsonProperty("contract_number")
    private String contractNumber;
    // 借据状态
    @JsonProperty("status")
    private String status;
    // 贷款金额
    @JsonProperty("loan_amount")
    private Integer loanAmount;
    // 借款期数
    @JsonProperty("periods")
    private Integer periods;
    // 房屋地址
    @JsonProperty("house_address")
    private String houseAddress;
    // 承办银行
    @JsonProperty("bank")
    private String bank;
    // 贷款类型
    @JsonProperty("loan_type")
    private String loanType;
    // 贷款发生日期
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "Asia/Shanghai")
    @JsonProperty("start_date")
    private Date startDate;
    // 贷款结束日期
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "Asia/Shanghai")
    @JsonProperty("end_date")
    private Date endDate;
    // 还款方式
    @JsonProperty("repay_type")
    private String repayType;
    // 扣款日
    @JsonProperty("deduct_day")
    private int deductDay;
    // 月还款额
    @JsonProperty("monthly_repay_amount")
    private Integer monthlyRepayAmount;
    // 扣款账号
    @JsonProperty("bank_account")
    private String bankAccount;
    // 扣款帐户名称
    @JsonProperty("bank_account_name")
    private String bankAccountName;
    // 贷款利率
    @JsonProperty("loan_interest_percent")
    private String loanInterestPercent;
    // 罚息利率
    @JsonProperty("penalty_interest_percent")
    private String penaltyInterestPercent;
    // 商贷合同编号
    @JsonProperty("commercial_contract_number")
    private String commercialContractNumber;
    // 商贷银行
    @JsonProperty("commercial_bank")
    private String commercialBank;
    // 商业贷款金额
    @JsonProperty("commercial_amount")
    private Integer commercialAmount;
    /**
     * *********************第二还款人信息*************************
     */
    // 第二还款人银行账号
    @JsonProperty("second_bank_account")
    private String secondBankAccount;
    // 第二还款人银行账号姓名
    @JsonProperty("second_bank_account_name")
    private String secondBankAccountName;
    // 第二还款人身份证
    @JsonProperty("second_id_card")
    private String secondIdCard;
    // 第二还款人电话
    @JsonProperty("second_phone")
    private String secondPhone;
    // 第二还款人工作单位
    @JsonProperty("second_corporation_name")
    private String secondCorporationName;

    /**
     * *********************贷款实时信息*************************
     */
    // 贷款余额
    @JsonProperty("remain_amount")
    private Integer remainAmount;
    // 剩余期数
    @JsonProperty("remain_periods")
    private Integer remainPeriods;
    // 最近还款时间
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "Asia/Shanghai")
    @JsonProperty("last_repay_date")
    private Date lastRepayDate;
    // 逾期本金
    @JsonProperty("overdue_capital")
    private Integer overdueCapital;
    // 逾期利息
    @JsonProperty("overdue_interest")
    private Integer overdueInterest;
    // 逾期天数
    @JsonProperty("overdue_days")
    private Integer overdueDays;
    // 逾期罚息
    @JsonProperty("overdue_penalty")
    private Integer overduePenalty;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getIdCard() {
        return idCard;
    }

    public void setIdCard(String idCard) {
        this.idCard = idCard;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getMailingAddress() {
        return mailingAddress;
    }

    public void setMailingAddress(String mailingAddress) {
        this.mailingAddress = mailingAddress;
    }

    public String getContractNumber() {
        return contractNumber;
    }

    public void setContractNumber(String contractNumber) {
        this.contractNumber = contractNumber;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public Integer getLoanAmount() {
        return loanAmount;
    }

    public void setLoanAmount(Integer loanAmount) {
        this.loanAmount = loanAmount;
    }

    public Integer getPeriods() {
        return periods;
    }

    public void setPeriods(Integer periods) {
        this.periods = periods;
    }

    public String getHouseAddress() {
        return houseAddress;
    }

    public void setHouseAddress(String houseAddress) {
        this.houseAddress = houseAddress;
    }

    public String getBank() {
        return bank;
    }

    public void setBank(String bank) {
        this.bank = bank;
    }

    public String getLoanType() {
        return loanType;
    }

    public void setLoanType(String loanType) {
        this.loanType = loanType;
    }

    public Date getStartDate() {
        return startDate;
    }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }

    public Date getEndDate() {
        return endDate;
    }

    public void setEndDate(Date endDate) {
        this.endDate = endDate;
    }

    public String getRepayType() {
        return repayType;
    }

    public void setRepayType(String repayType) {
        this.repayType = repayType;
    }

    public int getDeductDay() {
        return deductDay;
    }

    public void setDeductDay(int deductDay) {
        this.deductDay = deductDay;
    }

    public Integer getMonthlyRepayAmount() {
        return monthlyRepayAmount;
    }

    public void setMonthlyRepayAmount(Integer monthlyRepayAmount) {
        this.monthlyRepayAmount = monthlyRepayAmount;
    }

    public String getBankAccount() {
        return bankAccount;
    }

    public void setBankAccount(String bankAccount) {
        this.bankAccount = bankAccount;
    }

    public String getBankAccountName() {
        return bankAccountName;
    }

    public void setBankAccountName(String bankAccountName) {
        this.bankAccountName = bankAccountName;
    }

    public String getLoanInterestPercent() {
        return loanInterestPercent;
    }

    public void setLoanInterestPercent(String loanInterestPercent) {
        this.loanInterestPercent = loanInterestPercent;
    }

    public String getPenaltyInterestPercent() {
        return penaltyInterestPercent;
    }

    public void setPenaltyInterestPercent(String penaltyInterestPercent) {
        this.penaltyInterestPercent = penaltyInterestPercent;
    }

    public String getCommercialContractNumber() {
        return commercialContractNumber;
    }

    public void setCommercialContractNumber(String commercialContractNumber) {
        this.commercialContractNumber = commercialContractNumber;
    }

    public String getCommercialBank() {
        return commercialBank;
    }

    public void setCommercialBank(String commercialBank) {
        this.commercialBank = commercialBank;
    }

    public Integer getCommercialAmount() {
        return commercialAmount;
    }

    public void setCommercialAmount(Integer commercialAmount) {
        this.commercialAmount = commercialAmount;
    }

    public String getSecondBankAccount() {
        return secondBankAccount;
    }

    public void setSecondBankAccount(String secondBankAccount) {
        this.secondBankAccount = secondBankAccount;
    }

    public String getSecondBankAccountName() {
        return secondBankAccountName;
    }

    public void setSecondBankAccountName(String secondBankAccountName) {
        this.secondBankAccountName = secondBankAccountName;
    }

    public String getSecondIdCard() {
        return secondIdCard;
    }

    public void setSecondIdCard(String secondIdCard) {
        this.secondIdCard = secondIdCard;
    }

    public String getSecondPhone() {
        return secondPhone;
    }

    public void setSecondPhone(String secondPhone) {
        this.secondPhone = secondPhone;
    }

    public String getSecondCorporationName() {
        return secondCorporationName;
    }

    public void setSecondCorporationName(String secondCorporationName) {
        this.secondCorporationName = secondCorporationName;
    }

    public Integer getRemainAmount() {
        return remainAmount;
    }

    public void setRemainAmount(Integer remainAmount) {
        this.remainAmount = remainAmount;
    }

    public Integer getRemainPeriods() {
        return remainPeriods;
    }

    public void setRemainPeriods(Integer remainPeriods) {
        this.remainPeriods = remainPeriods;
    }

    public Date getLastRepayDate() {
        return lastRepayDate;
    }

    public void setLastRepayDate(Date lastRepayDate) {
        this.lastRepayDate = lastRepayDate;
    }

    public Integer getOverdueCapital() {
        return overdueCapital;
    }

    public void setOverdueCapital(Integer overdueCapital) {
        this.overdueCapital = overdueCapital;
    }

    public Integer getOverdueInterest() {
        return overdueInterest;
    }

    public void setOverdueInterest(Integer overdueInterest) {
        this.overdueInterest = overdueInterest;
    }

    public Integer getOverdueDays() {
        return overdueDays;
    }

    public void setOverdueDays(Integer overdueDays) {
        this.overdueDays = overdueDays;
    }

    public Integer getOverduePenalty() {
        return overduePenalty;
    }

    public void setOverduePenalty(Integer overduePenalty) {
        this.overduePenalty = overduePenalty;
    }


    @Override
    public String toString() {
        return "LoanInfo{" +
                "name='" + name + '\'' +
                ", idCard='" + idCard + '\'' +
                ", phone='" + phone + '\'' +
                ", mailingAddress='" + mailingAddress + '\'' +
                ", contractNumber='" + contractNumber + '\'' +
                ", status='" + status + '\'' +
                ", loanAmount=" + loanAmount +
                ", periods=" + periods +
                ", houseAddress='" + houseAddress + '\'' +
                ", bank='" + bank + '\'' +
                ", loanType='" + loanType + '\'' +
                ", startDate=" + startDate +
                ", endDate=" + endDate +
                ", repayType='" + repayType + '\'' +
                ", deductDay=" + deductDay +
                ", monthlyRepayAmount=" + monthlyRepayAmount +
                ", bankAccount='" + bankAccount + '\'' +
                ", bankAccountName='" + bankAccountName + '\'' +
                ", loanInterestPercent='" + loanInterestPercent + '\'' +
                ", penaltyInterestPercent='" + penaltyInterestPercent + '\'' +
                ", commercialContractNumber='" + commercialContractNumber + '\'' +
                ", commercialBank='" + commercialBank + '\'' +
                ", commercialAmount=" + commercialAmount +
                ", secondBankAccount='" + secondBankAccount + '\'' +
                ", secondBankAccountName='" + secondBankAccountName + '\'' +
                ", secondIdCard='" + secondIdCard + '\'' +
                ", secondPhone='" + secondPhone + '\'' +
                ", secondCorporationName='" + secondCorporationName + '\'' +
                ", remainAmount=" + remainAmount +
                ", remainPeriods=" + remainPeriods +
                ", lastRepayDate=" + lastRepayDate +
                ", overdueCapital=" + overdueCapital +
                ", overdueInterest=" + overdueInterest +
                ", overdueDays=" + overdueDays +
                ", overduePenalty=" + overduePenalty +
                '}';
    }
}
